package com.zshan.clinic.admin.entity.medical.rx.base;

import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonSubTypes;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.zshan.clinic.admin.entity.medical.rx.RxDrug;
import com.zshan.clinic.admin.entity.medical.rx.RxExt;
import com.zshan.clinic.admin.entity.medical.rx.RxInfusion;
import com.zshan.clinic.admin.entity.medical.rx.RxTcm;
import lombok.Data;

import java.util.Date;

/**
 * 门诊处方
 * @author lichen
 */
@Data
@JsonTypeInfo(
        use = JsonTypeInfo.Id.NAME,  // 使用字段名称来标识
        property = "rxType",  // 使用 rxType 字段来决定子类类型
        visible = true
)
@JsonSubTypes({
        @JsonSubTypes.Type(value = RxDrug.class, name = "1"),
        @JsonSubTypes.Type(value = RxInfusion.class, name = "2"),
        @JsonSubTypes.Type(value = RxTcm.class, name = "3"),
        @JsonSubTypes.Type(value = RxExt.class, name = "4"),
})
public class RxBase {

    /** 处方ID */
    private Long rxId;

    /** 处方名;成药处方一 */
    private String rxName;

    /** 处方类型 rxTypeEnum*/
    private String rxType;

    @JsonIgnore
    private String rxJson;

    //----------------------门诊需要序列化的字段----------------------
    /** 支付状态 payStatusEnum*/
    private String payStatus;

    /** 支付时间 */
    private Date payTime;

    /** 药库ID */
    private Long storageId;

    /** 总金额=每个subtotal相加 */
    private Integer totalAmount;
}
